package com.sg.dto.integration.app;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc CurrentContTargetSubCycleBudgetDto
 * @使用场景
 */
@Data
public class CurrentContTargetSubCycleBudgetDto
        extends BaseDto
        implements Serializable {

    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 周期ID
     */
    @ApiModelProperty("周期ID")
    private String cycleId;

    /**
     * 周期名称
     */
    @ApiModelProperty("周期名称")
    private String cycleStandardName;

    /**
     * 数据结果ID
     */
    @ApiModelProperty("数据结果ID ")
    private String dataResultId;

    /**
     * 预算金额
     */
    @ApiModelProperty("预算金额")
    private Double budget;

    /**
     * 预算金额单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("预算金额单位")
    private String budgetUnit;

    /**
     * 数据值结果
     */
    @ApiModelProperty("数据值结果")
    private Double dataResult;

    /**
     * 冗余单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份 %:%
     */
    @ApiModelProperty("冗余单位")
    private String unit;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        CurrentContTargetSubCycleBudgetDto that = (CurrentContTargetSubCycleBudgetDto) o;
        return (
                evaObjTargetCycleId == that.evaObjTargetCycleId &&
                        cycleId == that.cycleId &&
                        cycleStandardName == that.cycleStandardName &&
                        dataResultId == that.dataResultId &&
                        budget == that.budget &&
                        budgetUnit == that.budgetUnit &&
                        dataResult == that.dataResult &&
                        unit == that.unit
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                evaObjTargetCycleId,
                cycleId,
                cycleStandardName,
                dataResultId,
                budget,
                budgetUnit,
                dataResult,
                unit
        );
    }

}
